/*
递归函数
递归函数中要有调用自身的语句
递归函数中要有结束递归的语句
*/
#include <stdio.h>
/*获取一个数的阶乘*/
int factorial(int n){
	int result;
	if(n<0){
		printf("输入错误!\n");
		return 0;
	}else if(n==0||n==1){
		 result=1;
	}else{
		// 调用自身
		result=factorial(n-1)*n;
	}

	return result;
}

/*第一天记住1个单词,第二天记住2个单词，第n天记住多少个单词*/

/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{   
	if(n<=0){
		printf("输入错误!\n");
		return 0;
	}else if(n == 1){
        return 1;    //第一天只会1个单词
    }else{
        return n+getWordNumber(n-1);       //到第天会的单词数量
    }
}


/*
猴子第一天摘下N个桃子，当时就吃了一半，还不过瘾，就又多吃了一个。
第二天又将剩下的桃子吃掉一半，又多吃了一个。以后每天都吃前一天剩下的一半零一个。
到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子？
并反向打印每天所剩桃子数
*/
int getPeachNumber(n)
{
    int num;    //定义所剩桃子数
    if(n==10)
    {
       return 1;      //递归结束条件
    } 
    else
    {
        num = (getPeachNumber(n+1)+1)*2;   //这里是不应该用递归呢？
        printf("第%d天所剩桃子%d个\n", n, num); //天数，所剩桃子个数
    }
    return num;
}

/*
有5个人坐在一起，问第5个人多少岁？
他说比第4个人大2岁。问第4个人岁数，
他说比第3个人大2岁。问第3个人，又说比第2人大两岁。
问第2个人，说比第1个人大两岁。最后 问第1个人，
他说是10岁。请问第5个人多大？
*/
int getAge(int n){
    int age;
    if(n==1){
        age=10;
    }else{
        age=getAge(n-1)+2;
    }
    return age;
}



int main(int argc, char const *argv[])
{
	int n;
	printf("输入一个数字获得它的阶乘数:\n");
	scanf("%d",&n);
	printf("%d的阶乘为:%d\n",n,factorial(n));

	printf("%d天记住的单词数为:%d\n",n,getWordNumber(n));
	return 0;
}


